#include <iostream>
#include <vector>

// enum class Color{ // 不能转为整数
//     red,
//     green,
//     blue
// };

// class BitPoint{
// public:
//     int a:4; // 4个bit
//     bool b:1;
// };

class Base1{
    int x;
    int y;
public:
    virtual void process()
    {
        x++;
    }
};

class Sub1 : public Base1{
    int data;
public:
    void process() override{

    }
};
void process1(Base1 b)
{
    b.process(); // 非多态调用--编译时绑定 JMP 0x0000040
}

void process2(Base1 * b)
{
    b->process();// 多态调用 JMP(虚表指针)
}

void process3(Base1 & b)
{
    b.process();
}

int main()
{
    // std::cout << sizeof(BitPoint) << std::endl;
    std::cout << "hello world" << std::endl;
    Sub1 s1{};
    Sub1 * ps1 =  new Sub1();
    process1(s1); // 对象切片
    process2(&s1);
    process2(ps1);
    process3(s1);

    delete ps1;
    return 0;
} 
